package udp;

import java.io.IOException;
import java.net.SocketException;
import java.net.UnknownHostException;

import actualizador.DatoEquipo;
import actualizador.Mensaje;
import utiles.Fecha;
import utiles.Numeros;

public class UDPCliente {

	public static void main(String[] args) {
		String ipServidor;
		int puertoEnvio= 1700, puertoReceptor= 1710, nroMensaje= 0;
		UDPEnviador enviador;
		UDPReceptor receptor;
		Mensaje msg;
		DatoEquipo ip= new DatoEquipo();
		try {		
			System.out.println("Ip Cliente: "+ip.getIp());
			
			enviador= new UDPEnviador(puertoEnvio);
			msg= new Mensaje(nroMensaje++, ip, "Hola."+Fecha.getMarcaTiempo());
			System.out.println("Mensaje a enviar: "+msg);
			enviador.enviarMensajeBroadcast(msg);
		
			receptor= new UDPReceptor(puertoReceptor, 1024);
			
			msg= (Mensaje) receptor.recibirMensaje();
			ipServidor= msg.getDatosEquipoRemoto().getIp();
			System.out.println("Respuesta recibida (Servidor: "+ipServidor+"): "+msg);
			
			for(int i= 0; i < 250; i++){
				msg= new Mensaje(nroMensaje++, ip, "Hola."+Fecha.getMarcaTiempo());
				System.out.println("Mensaje a enviar: "+msg);
				enviador.enviarMensaje(ipServidor, msg);
				try {
					Thread.currentThread();
					Thread.sleep(Numeros.randomInteger(1000, 10000));
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			
			receptor.cerrarDatagrama();
			enviador.cerrarDatagrama();
		
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		System.out.println("Fin.");
	}
}
